<?php

//...........商品公共模型.................


class GoodsModel extends Model{
	
	//公共属性
	public $table = 'goods';
	
	
	//验证规则
	public $validate = array(
		//标题不能为空
		array('gname','nonull','商品名不能为空',2,3),
		//分类不能为空
		array('cid','nonull','分类不能为空',2,3),		
		//goodscol 货品号  不能为空
		array('goodscol','nonull','货品号不能为空',2,3),
		//market_price 市场价 不能为空
		array('market_price','nonull','市场价不能为空',2,3),
		//shop_price  商城价  不能空
		array('shop_price','nonull','商城价不能为空',2,3),
		//unit  单位不能为空
		array('unit','nonull','单位不能为空',2,3),
		//inventory 总库存
		array('inventory','nonull','总库存不能为空',2,3),
		//描述不能为空
		array('describe','nonull','描述不能为空',2,3),
						
	);
	
	//........自动验证.........
	public $auto = array(
		//上架时间
		array('register_time','_time','method',2,1),
		//商品的gid
		array('gid','_gid','method',2,1),

	);
	
	
	//..............验证gid................
	public function _gid(){
		//获得发布文章的AID
		return session('gid');
	}
	
	
	
	//..............时间..................
	public function _time(){
		//自动反出时间格式
		return time();
	}
	
	
	//.......添加商品...........
	public function add_data(){
		//判断一下 上面的验证规则
		if(!$this->create()) return false;
		//1.添加商品数据
//		p(Q('post.'));
		$gid = $this->add();
		//2.添加商品详细
		//组合商品和商品详细属性
		$data = array(
			//商品细节表的gid  等于  商品gid
			'gid'		=>	$gid,
			//商品细节添加
			'goodsdet'  => 	Q('post.intro'),
		);
		//判断是否post传输, 传输过来了没有  如果没有 然后按照插件和上传方法组合路径
		//小图  
		if($smallPic = Q('post.small_pic')){
			$data['small_pic'] = implode(';', $smallPic);
		}
		//判断是否post传输, 传输过来了没有  如果没有 然后按照插件和上传方法组合路径
		//大图 
		if($bigPic = Q('post.big_pic')){
			$data['big_pic'] = implode(';', $bigPic);
		}
		//实例化商品详细模型
		K('Goodsdet')->add_goodsdet($data);
		//3.添加商品属性
		$attr = array();
		foreach ($_POST['attrname1'] as $k => $v) {
			$attr[] = array(
				'attrname'	=>	$v,
				'attrvalue'	=>	$_POST['attrvalue1'][$k],
				 'gid'	    =>  $gid,
				 'taid'		=>	1				 
			);
		}
		
		foreach ($_POST['attrname2'] as $k => $v) {
			$attr[] = array(
				'attrname'	=>	$v,
				'attrvalue'	=>	$_POST['attrvalue2'][$k],
				 'gid'	    =>  $gid,
				 'taid'		=>	2				 
			);
		}
		
		K('Comproperty')->add_comproperty($attr);
		
		return true;
		
		
	}
	
	
	
	 /**
	 * ..........获得所有数据.............
	 */
	 
	  public function get_all_data($where=NULL,$needPage=FALSE){
		//判断，如果使用分页
		if($needPage){																											
			//分页类用法
			//1.总条数（使用分页的时候where是有值的）
			$total = $this->where($where)->count();
			//2.每页取得多少条
			//3.显示页码的数量，10显示10条
			$pageObj = new Page($total,10);
			//显示分页
			$page = $pageObj->show();
			//算出分页类的limit
			$limit = $pageObj->limit();
			//在使用分页类的时候要注意limit
			$data = $this->where($where)->limit($limit)->all();
			//把page转换成一个数组
			$data['page'] = $page;
			//如果不使用分页
		}else{
			//那么where是null
			$data = $this->where($where)->all();
		}
		//返回$data
		 return $data;	
	 }
	  
	  
	  
	    /**
	  * ............删除.............
	  */
	 public function del_data($gid){
		//删除数据
		$where = array('gid'=>$gid);
		//p($where);die;
		$this->where($where)->delete();
		
		
		//....删除其他表		
		K('Comproperty')->del_data($where);		
		K('Goodsdet')->del_data($where);
		
	 }
	 
	 
	 
	 
	 
	 
	 
	 /**
	  * ............修改...................
	  */
	  public function eaid_data($gid){
	  	if(!$this->create()) return false;
		//1.修改商品表
		$where = array('gid'=>$gid);
		$this->where($where)->save();
		//2.修改商品详细表
		$where = array('gid'=>$gid);
		K('Goodsdet')->eaid_data($where);
		//3.修改商品属性表
		$where = array('gid'=>$gid);
		K('Comproperty')->eaid_data($where);	
		
		return true;
		
	  }
	

	  	  
	  
	 /**
	  * ..........获得一条数据.........
	  */	  
	 //设置两个参数，这两个参数默认为null
	 public function get_one_data($where=NULL,$field=NULL){
		//主要返回一条数据
		return $this->where($where)->field($field)->find();
	 }
	
	
	
	
	
	
	
}
